Choropleths in R

Need to import libraries for data manipulation and visualization

library(plotly)
library(dplyr)
library(readr)

states = read.csv('states.csv')
minwage.df = read_csv('Minimum Wage Data.csv') %>% 
  inner_join(states, by.x= State, by.y= state) %>% 
  mutate(hover= paste0(State,"\n$", State.Minimum.Wage.2020.Dollars))
minwage_graph = plot_geo(minwage.df,
                         locationmode= 'USA-states',
                         frame= ~Year) %>% 
  add_trace(locations = ~Code,
            z= ~State.Minimum.Wage.2020.Dollars,
            color= ~State.Minimum.Wage.2020.Dollars )

minwage_graph
NA

Edit map of world

Just want the US map as the data is US-based. Need to add a layout function

fig.layout.template = 'plotly_dark'

minwage_graph = plot_geo(minwage.df,
                         locationmode= 'USA-states',
                         frame= ~Year) %>% 
  add_trace(locations = ~Code,
            z= ~State.Minimum.Wage.2020.Dollars,
            zmin = 0,
            zmax = max(minwage.df$State.Minimum.Wage.2020.Dollars),
            color= ~State.Minimum.Wage,
            colorscale= 'Rainbow') %>% 
  layout(geo= list(scope= 'usa'))

minwage_graph
NA

fontstyle = list(family= 'monaco', size=15, color='black')
label = list(bgcolor= '#eee', font= fontstyle)

minwage_graph = plot_geo(minwage.df,
                         locationmode= 'USA-states',
                         frame= ~Year) %>% 
  add_trace(locations = ~Code,
            z= ~State.Minimum.Wage.2020.Dollars,
            zmin = 0,
            zmax = max(minwage.df$State.Minimum.Wage.2020.Dollars),
            color= ~State.Minimum.Wage,
            colorscale= 'Rainbow',
            text = ~hover,
            hoverinfo = 'text'
            ) %>% 
  layout(geo= list(scope= 'usa'),
         title='\nUSA Sate Min. Wage in 2020 $',
         font = list(family= 'monaco')) %>% 
  style(hoverlabel = label) %>% 
  colorbar(tickprefix= "$")

minwage_graph
NA

UFO choropleth

The dataset of UFO sightings, use longititude and latitude columns

corona = readr::read_csv('https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_daily_reports_us/01-01-2021.csv')
ufos = read_csv('ufos.csv') %>% 
  select(longitude, latitude, datetime, shape)
geo_properties = list(
  scope= 'usa',
  projection = list(type= 'albers usa'),
  showland = TRUE,
  showsubunits= FALSE,
  landcolor= toRGB('gray10'),
  showlakes= TRUE,
  lakecolor= toRGB('white')
)

ufos_graphs = plot_geo(ufos,
                       y= ~ufos$latitude,
                       x = ~ufos$longitude,
                       marker= list(size=2,
                                    color='pink',
                                    opacity= 0.25)) %>% 
  add_markers(hoverinfo= "none") %>% 
  layout(geo = geo_properties)

ufos_graphs

Plotly plots

customizing Plotly

library(plotly)

p = plot_ly(
  corona,
             type = "scatter",        
            # all "scatter" attributes: https://plot.ly/r/reference/#scatter
             x = ~corona$Province_State,               
            # more about scatter's "x": /r/reference/#scatter-x
             y = ~corona$Deaths,            
            # more about scatter's "y": /r/reference/#scatter-y
             name = "covid-19",   # more about scatter's "name": /r/reference/#scatter-name
             marker = list(           
               # marker is a named list, valid keys: /r/reference/#scatter-marker
               color="#264E86"        
               # more about marker's "color" attribute: /r/reference/#scatter-marker-color
             )) %>%
  layout(                        # all of layout's properties: /r/reference/#layout
         title = "covid-19", # layout's title: /r/reference/#layout-title
         xaxis = list(           
           # layout's xaxis is a named list. List of valid keys: /r/reference/#layout-xaxis
            title = "State",      # xaxis's title: /r/reference/#layout-xaxis-title
            showgrid = F),       # xaxis's showgrid: /r/reference/#layout-xaxis-showgrid
         yaxis = list(           
           # layout's yaxis is a named list. List of valid keys: /r/reference/#layout-yaxis
            title = "Deaths")     # yaxis's title: /r/reference/#layout-yaxis-title
)

p
No scatter mode specifed:
  Setting the mode to markers
  Read more about this attribute -> https://plotly.com/r/reference/#scatter-mode
No scatter mode specifed:
  Setting the mode to markers
  Read more about this attribute -> https://plotly.com/r/reference/#scatter-mode

bar chart

p = plot_ly(
  x= corona$Province_State,
  y= corona$Deaths,
  type = 'bar'
) %>% 
  layout(paper_bgcolor='#5875D5',
       plot_bgcolor='#5875D5')
p

change bar colors

p = plot_ly(
  x= corona$Province_State,
  y= corona$Deaths,
  type = 'bar',
  marker= list(color="#fff")
) %>% 
  layout(paper_bgcolor='#5875D5',
       plot_bgcolor='#5875D5')
p

style axis

p = plot_ly(
  x= corona$Province_State,
  y= corona$Deaths,
  type = 'bar',
   marker= list(color="#fff")
) %>% 
  layout(
    paper_bgcolor='#5875D5',
    plot_bgcolor='#5875D5',
    xaxis= list(color="#fff", title='State'),
    yaxis= list(color="#fff", title='Deaths'))
p

adding ticks and angle

p = plot_ly(
  x= corona$Province_State,
  y= corona$Deaths,
  type = 'bar',
   marker= list(color="#fff")
) %>% 
  layout(
    paper_bgcolor='#5875D5',
    plot_bgcolor='#5875D5',
    titlefont= list(family= 'monaco', size=15, color='#fff'),
    title= "\nUSA Covid-19 Deaths (Jan 1 2021)",
    xaxis= list(color="#fff", title='State', tickangle= -45),
    yaxis= list(color="#fff", title='Deaths'))
p
The titlefont attribute is deprecated. Use title = list(font = ...) instead.The titlefont attribute is deprecated. Use title = list(font = ...) instead.
LS0tCnRpdGxlOiAiUiAqKkNob3JvcGxldGgqKiBOb3RlYm9vayIKYXV0aG9yOiAiIFphbmUgRGF4IgpkYXRlOiAiIE1heSAxMiAyMDIxIgpvdXRwdXQ6IAogIGh0bWxfbm90ZWJvb2s6IAogICAgdG9jOiB5ZXMKICAgIHRoZW1lOiBzcGFjZWxhYgogICAgY3NzOiB+L0RvY3VtZW50cy9SXy9SLmNzcwotLS0KCiMgQ2hvcm9wbGV0aHMgaW4gUgoKTmVlZCB0byBpbXBvcnQgbGlicmFyaWVzIGZvciBkYXRhIG1hbmlwdWxhdGlvbiBhbmQgdmlzdWFsaXphdGlvbgpgYGB7ciBsaWJyYXJpZXN9CmxpYnJhcnkocGxvdGx5KQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KHJlYWRyKQoKc3RhdGVzID0gcmVhZC5jc3YoJ3N0YXRlcy5jc3YnKQptaW53YWdlLmRmID0gcmVhZF9jc3YoJ01pbmltdW0gV2FnZSBEYXRhLmNzdicpICU+JSAKICBpbm5lcl9qb2luKHN0YXRlcywgYnkueD0gU3RhdGUsIGJ5Lnk9IHN0YXRlKSAlPiUgCiAgbXV0YXRlKGhvdmVyPSBwYXN0ZTAoU3RhdGUsIlxuJCIsIFN0YXRlLk1pbmltdW0uV2FnZS4yMDIwLkRvbGxhcnMpKQpgYGAKCmBgYHtyfQptaW53YWdlX2dyYXBoID0gcGxvdF9nZW8obWlud2FnZS5kZiwKICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9ubW9kZT0gJ1VTQS1zdGF0ZXMnLAogICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWU9IH5ZZWFyKSAlPiUgCiAgYWRkX3RyYWNlKGxvY2F0aW9ucyA9IH5Db2RlLAogICAgICAgICAgICB6PSB+U3RhdGUuTWluaW11bS5XYWdlLjIwMjAuRG9sbGFycywKICAgICAgICAgICAgY29sb3I9IH5TdGF0ZS5NaW5pbXVtLldhZ2UuMjAyMC5Eb2xsYXJzICkKCm1pbndhZ2VfZ3JhcGgKCmBgYAoKCgoKCiMjIEVkaXQgbWFwIG9mIHdvcmxkCkp1c3Qgd2FudCB0aGUgVVMgbWFwIGFzIHRoZSBkYXRhIGlzIFVTLWJhc2VkLiBOZWVkIHRvIGFkZCBhIGxheW91dCBmdW5jdGlvbgoKYGBge3J9CmZpZy5sYXlvdXQudGVtcGxhdGUgPSAncGxvdGx5X2RhcmsnCgptaW53YWdlX2dyYXBoID0gcGxvdF9nZW8obWlud2FnZS5kZiwKICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9ubW9kZT0gJ1VTQS1zdGF0ZXMnLAogICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWU9IH5ZZWFyKSAlPiUgCiAgYWRkX3RyYWNlKGxvY2F0aW9ucyA9IH5Db2RlLAogICAgICAgICAgICB6PSB+U3RhdGUuTWluaW11bS5XYWdlLjIwMjAuRG9sbGFycywKICAgICAgICAgICAgem1pbiA9IDAsCiAgICAgICAgICAgIHptYXggPSBtYXgobWlud2FnZS5kZiRTdGF0ZS5NaW5pbXVtLldhZ2UuMjAyMC5Eb2xsYXJzKSwKICAgICAgICAgICAgY29sb3I9IH5TdGF0ZS5NaW5pbXVtLldhZ2UsCiAgICAgICAgICAgIGNvbG9yc2NhbGU9ICdSYWluYm93JykgJT4lIAogIGxheW91dChnZW89IGxpc3Qoc2NvcGU9ICd1c2EnKSkKCm1pbndhZ2VfZ3JhcGgKCmBgYAoKCgoKCgpgYGB7cn0KCmZvbnRzdHlsZSA9IGxpc3QoZmFtaWx5PSAnbW9uYWNvJywgc2l6ZT0xNSwgY29sb3I9J2JsYWNrJykKbGFiZWwgPSBsaXN0KGJnY29sb3I9ICcjZWVlJywgZm9udD0gZm9udHN0eWxlKQoKbWlud2FnZV9ncmFwaCA9IHBsb3RfZ2VvKG1pbndhZ2UuZGYsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbm1vZGU9ICdVU0Etc3RhdGVzJywKICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lPSB+WWVhcikgJT4lIAogIGFkZF90cmFjZShsb2NhdGlvbnMgPSB+Q29kZSwKICAgICAgICAgICAgej0gflN0YXRlLk1pbmltdW0uV2FnZS4yMDIwLkRvbGxhcnMsCiAgICAgICAgICAgIHptaW4gPSAwLAogICAgICAgICAgICB6bWF4ID0gbWF4KG1pbndhZ2UuZGYkU3RhdGUuTWluaW11bS5XYWdlLjIwMjAuRG9sbGFycyksCiAgICAgICAgICAgIGNvbG9yPSB+U3RhdGUuTWluaW11bS5XYWdlLAogICAgICAgICAgICBjb2xvcnNjYWxlPSAnUmFpbmJvdycsCiAgICAgICAgICAgIHRleHQgPSB+aG92ZXIsCiAgICAgICAgICAgIGhvdmVyaW5mbyA9ICd0ZXh0JwogICAgICAgICAgICApICU+JSAKICBsYXlvdXQoZ2VvPSBsaXN0KHNjb3BlPSAndXNhJyksCiAgICAgICAgIHRpdGxlPSdcblVTQSBTYXRlIE1pbi4gV2FnZSBpbiAyMDIwICQnLAogICAgICAgICBmb250ID0gbGlzdChmYW1pbHk9ICdtb25hY28nKSkgJT4lIAogIHN0eWxlKGhvdmVybGFiZWwgPSBsYWJlbCkgJT4lIAogIGNvbG9yYmFyKHRpY2twcmVmaXg9ICIkIikKCm1pbndhZ2VfZ3JhcGgKCmBgYAoKCgoKIyMgVUZPIGNob3JvcGxldGgKVGhlIGRhdGFzZXQgb2YgVUZPIHNpZ2h0aW5ncywgdXNlIGxvbmdpdGl0dWRlIGFuZCBsYXRpdHVkZSBjb2x1bW5zCgpgYGB7cn0KY29yb25hID0gcmVhZHI6OnJlYWRfY3N2KCdodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ1NTRUdJU2FuZERhdGEvQ09WSUQtMTkvbWFzdGVyL2Nzc2VfY292aWRfMTlfZGF0YS9jc3NlX2NvdmlkXzE5X2RhaWx5X3JlcG9ydHNfdXMvMDEtMDEtMjAyMS5jc3YnKQpgYGAKCmBgYHtyfQp1Zm9zID0gcmVhZF9jc3YoJ3Vmb3MuY3N2JykgJT4lIAogIHNlbGVjdChsb25naXR1ZGUsIGxhdGl0dWRlLCBkYXRldGltZSwgc2hhcGUpCmBgYAoKYGBge3J9Cmdlb19wcm9wZXJ0aWVzID0gbGlzdCgKICBzY29wZT0gJ3VzYScsCiAgcHJvamVjdGlvbiA9IGxpc3QodHlwZT0gJ2FsYmVycyB1c2EnKSwKICBzaG93bGFuZCA9IFRSVUUsCiAgc2hvd3N1YnVuaXRzPSBGQUxTRSwKICBsYW5kY29sb3I9IHRvUkdCKCdncmF5MTAnKSwKICBzaG93bGFrZXM9IFRSVUUsCiAgbGFrZWNvbG9yPSB0b1JHQignd2hpdGUnKQopCgp1Zm9zX2dyYXBocyA9IHBsb3RfZ2VvKHVmb3MsCiAgICAgICAgICAgICAgICAgICAgICAgeT0gfnVmb3MkbGF0aXR1ZGUsCiAgICAgICAgICAgICAgICAgICAgICAgeCA9IH51Zm9zJGxvbmdpdHVkZSwKICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXI9IGxpc3Qoc2l6ZT0yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj0ncGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk9IDAuMjUpKSAlPiUgCiAgYWRkX21hcmtlcnMoaG92ZXJpbmZvPSAibm9uZSIpICU+JSAKICBsYXlvdXQoZ2VvID0gZ2VvX3Byb3BlcnRpZXMpCgp1Zm9zX2dyYXBocwpgYGAKCgoKCgoKCgoKCgoKIyBQbG90bHkgcGxvdHMKY3VzdG9taXppbmcgUGxvdGx5CgpgYGB7cn0KbGlicmFyeShwbG90bHkpCgpwID0gcGxvdF9seSgKICBjb3JvbmEsCiAgICAgICAgICAgICB0eXBlID0gInNjYXR0ZXIiLCAgICAgICAgCiAgICAgICAgICAgICMgYWxsICJzY2F0dGVyIiBhdHRyaWJ1dGVzOiBodHRwczovL3Bsb3QubHkvci9yZWZlcmVuY2UvI3NjYXR0ZXIKICAgICAgICAgICAgIHggPSB+Y29yb25hJFByb3ZpbmNlX1N0YXRlLCAgICAgICAgICAgICAgIAogICAgICAgICAgICAjIG1vcmUgYWJvdXQgc2NhdHRlcidzICJ4IjogL3IvcmVmZXJlbmNlLyNzY2F0dGVyLXgKICAgICAgICAgICAgIHkgPSB+Y29yb25hJERlYXRocywgICAgICAgICAgICAKICAgICAgICAgICAgIyBtb3JlIGFib3V0IHNjYXR0ZXIncyAieSI6IC9yL3JlZmVyZW5jZS8jc2NhdHRlci15CiAgICAgICAgICAgICBuYW1lID0gImNvdmlkLTE5IiwgICAjIG1vcmUgYWJvdXQgc2NhdHRlcidzICJuYW1lIjogL3IvcmVmZXJlbmNlLyNzY2F0dGVyLW5hbWUKICAgICAgICAgICAgIG1hcmtlciA9IGxpc3QoICAgICAgICAgICAKICAgICAgICAgICAgICAgIyBtYXJrZXIgaXMgYSBuYW1lZCBsaXN0LCB2YWxpZCBrZXlzOiAvci9yZWZlcmVuY2UvI3NjYXR0ZXItbWFya2VyCiAgICAgICAgICAgICAgIGNvbG9yPSIjMjY0RTg2IiAgICAgICAgCiAgICAgICAgICAgICAgICMgbW9yZSBhYm91dCBtYXJrZXIncyAiY29sb3IiIGF0dHJpYnV0ZTogL3IvcmVmZXJlbmNlLyNzY2F0dGVyLW1hcmtlci1jb2xvcgogICAgICAgICAgICAgKSkgJT4lCiAgbGF5b3V0KCAgICAgICAgICAgICAgICAgICAgICAgICMgYWxsIG9mIGxheW91dCdzIHByb3BlcnRpZXM6IC9yL3JlZmVyZW5jZS8jbGF5b3V0CiAgICAgICAgIHRpdGxlID0gImNvdmlkLTE5IiwgIyBsYXlvdXQncyB0aXRsZTogL3IvcmVmZXJlbmNlLyNsYXlvdXQtdGl0bGUKICAgICAgICAgeGF4aXMgPSBsaXN0KCAgICAgICAgICAgCiAgICAgICAgICAgIyBsYXlvdXQncyB4YXhpcyBpcyBhIG5hbWVkIGxpc3QuIExpc3Qgb2YgdmFsaWQga2V5czogL3IvcmVmZXJlbmNlLyNsYXlvdXQteGF4aXMKICAgICAgICAgICAgdGl0bGUgPSAiU3RhdGUiLCAgICAgICMgeGF4aXMncyB0aXRsZTogL3IvcmVmZXJlbmNlLyNsYXlvdXQteGF4aXMtdGl0bGUKICAgICAgICAgICAgc2hvd2dyaWQgPSBGKSwgICAgICAgIyB4YXhpcydzIHNob3dncmlkOiAvci9yZWZlcmVuY2UvI2xheW91dC14YXhpcy1zaG93Z3JpZAogICAgICAgICB5YXhpcyA9IGxpc3QoICAgICAgICAgICAKICAgICAgICAgICAjIGxheW91dCdzIHlheGlzIGlzIGEgbmFtZWQgbGlzdC4gTGlzdCBvZiB2YWxpZCBrZXlzOiAvci9yZWZlcmVuY2UvI2xheW91dC15YXhpcwogICAgICAgICAgICB0aXRsZSA9ICJEZWF0aHMiKSAgICAgIyB5YXhpcydzIHRpdGxlOiAvci9yZWZlcmVuY2UvI2xheW91dC15YXhpcy10aXRsZQopCgpwCmBgYAoKCgoKCgoKCgoKCiMjIGJhciBjaGFydApgYGB7cn0KcCA9IHBsb3RfbHkoCiAgeD0gY29yb25hJFByb3ZpbmNlX1N0YXRlLAogIHk9IGNvcm9uYSREZWF0aHMsCiAgdHlwZSA9ICdiYXInCikgJT4lIAogIGxheW91dChwYXBlcl9iZ2NvbG9yPScjNTg3NUQ1JywKICAgICAgIHBsb3RfYmdjb2xvcj0nIzU4NzVENScpCnAKYGBgCgojIyBjaGFuZ2UgYmFyIGNvbG9ycwoKYGBge3J9CnAgPSBwbG90X2x5KAogIHg9IGNvcm9uYSRQcm92aW5jZV9TdGF0ZSwKICB5PSBjb3JvbmEkRGVhdGhzLAogIHR5cGUgPSAnYmFyJywKICBtYXJrZXI9IGxpc3QoY29sb3I9IiNmZmYiKQopICU+JSAKICBsYXlvdXQocGFwZXJfYmdjb2xvcj0nIzU4NzVENScsCiAgICAgICBwbG90X2JnY29sb3I9JyM1ODc1RDUnKQpwCmBgYAoKCiMjIHN0eWxlIGF4aXMKYGBge3J9CnAgPSBwbG90X2x5KAogIHg9IGNvcm9uYSRQcm92aW5jZV9TdGF0ZSwKICB5PSBjb3JvbmEkRGVhdGhzLAogIHR5cGUgPSAnYmFyJywKICAgbWFya2VyPSBsaXN0KGNvbG9yPSIjZmZmIikKKSAlPiUgCiAgbGF5b3V0KAogICAgcGFwZXJfYmdjb2xvcj0nIzU4NzVENScsCiAgICBwbG90X2JnY29sb3I9JyM1ODc1RDUnLAogICAgeGF4aXM9IGxpc3QoY29sb3I9IiNmZmYiLCB0aXRsZT0nU3RhdGUnKSwKICAgIHlheGlzPSBsaXN0KGNvbG9yPSIjZmZmIiwgdGl0bGU9J0RlYXRocycpKQpwCmBgYAoKCgoKIyMjIGFkZGluZyB0aWNrcyBhbmQgYW5nbGUKYGBge3J9CnAgPSBwbG90X2x5KAogIHg9IGNvcm9uYSRQcm92aW5jZV9TdGF0ZSwKICB5PSBjb3JvbmEkRGVhdGhzLAogIHR5cGUgPSAnYmFyJywKICAgbWFya2VyPSBsaXN0KGNvbG9yPSIjZmZmIikKKSAlPiUgCiAgbGF5b3V0KAogICAgcGFwZXJfYmdjb2xvcj0nIzU4NzVENScsCiAgICBwbG90X2JnY29sb3I9JyM1ODc1RDUnLAogICAgdGl0bGVmb250PSBsaXN0KGZhbWlseT0gJ21vbmFjbycsIHNpemU9MTUsIGNvbG9yPScjZmZmJyksCiAgICB0aXRsZT0gIlxuVVNBIENvdmlkLTE5IERlYXRocyAoSmFuIDEgMjAyMSkiLAogICAgeGF4aXM9IGxpc3QoY29sb3I9IiNmZmYiLCB0aXRsZT0nU3RhdGUnLCB0aWNrYW5nbGU9IC00NSksCiAgICB5YXhpcz0gbGlzdChjb2xvcj0iI2ZmZiIsIHRpdGxlPSdEZWF0aHMnKSkKcApgYGAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK